// redux 仓库

//配置数据的持久化效果
import { persistStore, persistReducer } from "redux-persist"
//导入需要配置的数据源，可以选择，storage，cookie,session等
import storage from "redux-persist/lib/storage";

// 01
import { legacy_createStore as createStore } from "redux";

// 02: 初始数据
const defaultState = {
  acl: [] // 用户菜单
}

// 03: 创建 reducer 纯函数
const reducer = (state = defaultState, action) => {
  if (action.type == 'updataAcl') {
    state.acl = action.payload
    return {
      ...state, // 保留原数据
    }
  }
  return state // 没有匹配, 返回原 state
}

//定义配置的信息
const persitConfig = {
  key: "userAcl",
  storage: storage,
  // 如果不想将部分state持久化，可以将其放入黑名单(blacklist)中.黑名单是设置
  blacklist: ['不想缓存的状态的名字']
}
//创建持久化的配置persist的信息
const persist_reducers = persistReducer(persitConfig, reducer);

// 04: 创建仓库
const store = createStore(
  persist_reducers,
  window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()
)

const persistor = persistStore(store);//使用persistStore包裹一下
// 05: 导出store
//抛出store和持久化工具两个对象信息
export { store, persistor };